home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Utilities / Communications / InterSLIP Remote 1.2.2 / Developers / InterSLIP.p next >
Text File  |  1995-10-22  |  2KB  |  130 lines

  1. UNIT InterSLIP;
  2. INTERFACE
  3.  
  4. {$IFC UNDEFINED THINK_PASCAL}
  5.     USES
  6.         Types;
  7. {$ENDC}
  8.  
  9.     CONST
  10.         linkIdle = 0;
  11.         linkWaitingForModem = 1;
  12.         linkDialing = 2;
  13.         linkLoggingIn = 3;
  14.         linkConnected = 4;
  15.         linkHangingUp = 5;
  16.  
  17.     TYPE
  18.         InterSlipReportRec = RECORD
  19.                 linkState: LongInt;
  20.                 msgSeqNo: LongInt;
  21.                 msgStr: Ptr;
  22.             END;
  23.  
  24.     FUNCTION InterSlipOpenDriver (VAR drvrRefNum: Integer): OSErr;
  25.  
  26.     FUNCTION InterSlipConnect (drvrRefNum: Integer): OSErr;
  27.     FUNCTION InterSlipDisconnect (drvrRefNum: Integer): OSErr;
  28.  
  29.     FUNCTION InterSlipReport (drvrRefNum: Integer; VAR report: InterSlipReportRec): OSErr;
  30.  
  31.     FUNCTION CToPStr (c: Ptr): Str255;
  32.  
  33. IMPLEMENTATION
  34.  
  35. {$IFC UNDEFINED THINK_PASCAL}
  36.     USES
  37.         Files, Devices;
  38. {$ENDC}
  39.  
  40. {$IFC NOT UNDEFINED THINK_PASCAL}
  41.     FUNCTION PBControlImmed (pb: ParmBlkPtr): OSErr;
  42.     INLINE
  43.         $205F, $A204, $3E80;
  44. {$ENDC}
  45.  
  46.     FUNCTION InterSlipOpenDriver;
  47.     BEGIN
  48.         InterSlipOpenDriver := OpenDriver('.InterSLIP', drvrRefNum);
  49.     END;
  50.  
  51.     FUNCTION InterSlipConnect;
  52.         VAR
  53.             pb: ParamBlockRec;
  54.             count: Integer;
  55.  
  56.     BEGIN
  57.         pb.ioRefNum := drvrRefNum;
  58.         pb.csCode := 2;
  59.  
  60.         FOR count := 0 TO 10 DO
  61.             pb.csParam[count] := 0;
  62.  
  63.         InterSlipConnect := PBControlImmed(@pb);
  64.     END;
  65.  
  66.     FUNCTION InterSlipDisconnect;
  67.         VAR
  68.             pb: ParamBlockRec;
  69.             count: Integer;
  70.  
  71.     BEGIN
  72.         pb.ioRefNum := drvrRefNum;
  73.         pb.csCode := 3;
  74.  
  75.         FOR count := 0 TO 10 DO
  76.             pb.csParam[count] := 0;
  77.  
  78.         InterSlipDisconnect := PBControlImmed(@pb);
  79.     END;
  80.  
  81.     FUNCTION InterSlipReport;
  82.         TYPE
  83.             LArray = ARRAY[0..4] OF LongInt;
  84.             LArrayPtr = ^LArray;
  85.  
  86.         VAR
  87.             pb: ParamBlockRec;
  88.             count: Integer;
  89.             err: OSErr;
  90.  
  91.     BEGIN
  92.         pb.ioRefNum := drvrRefNum;
  93.         pb.csCode := 4;
  94.  
  95.         FOR count := 0 TO 10 DO
  96.             pb.csParam[count] := 0;
  97.  
  98.         err := PBControlImmed(@pb);
  99.  
  100.         IF err = noErr THEN
  101.             BEGIN
  102.                 report.linkState := LArrayPtr(@pb.csParam)^[0];
  103.                 report.msgSeqNo := LArrayPtr(@pb.csParam)^[1];
  104.                 report.msgStr := Ptr(LArrayPtr(@pb.csParam)^[2]);
  105.             END;
  106.  
  107.         InterSlipReport := err;
  108.     END;
  109.  
  110.     FUNCTION CToPStr;
  111.         TYPE
  112.             BArray = PACKED ARRAY[0..254] OF Char;
  113.             BArrayPtr = ^BArray;
  114.  
  115.         VAR
  116.             str: Str255;
  117.             i: Integer;
  118.  
  119.     BEGIN
  120.         i := 0;
  121.         WHILE (BArrayPtr(c)^[i] <> Char(0)) AND (i < 254) DO
  122.             BEGIN
  123.                 str[i + 1] := BArrayPtr(c)^[i];
  124.                 i := i + 1;
  125.             END;
  126.         str[0] := Char(i);
  127.         CToPStr := str;
  128.     END;
  129.  
  130. END.